home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / program / qlib205.zip / QLIB.ZIP / TEST / GRAFIX.ASM < prev    next >
Assembly Source File  |  1997-06-05  |  10KB  |  232 lines

  1. include qlib.inc
  2. include dos.inc
  3. include string.inc
  4. include video.inc     ;includes vesa.inc
  5. include conio.inc
  6. include stdio.inc
  7. include stdlib.inc
  8. include alloc.inc
  9. include stdlib.inc
  10. include ctype.inc
  11.  
  12. .data
  13. cursor8a label byte
  14.   db 16,16,16,16,16,16,16,16,00
  15.   db 16,01,01,01,01,01,16,00,00
  16.   db 16,01,01,01,01,16,00,00,00
  17.   db 16,01,01,01,01,16,00,00,00
  18.   db 16,01,01,01,01,01,16,00,00
  19.   db 16,01,16,16,01,01,01,16,00
  20.   db 16,16,00,00,16,01,01,01,16
  21.   db 16,00,00,00,00,16,01,16,00
  22.   db 00,00,00,00,00,00,16,00,00
  23.  
  24. cursor8b label byte
  25.   db 01,01,01,01,01,01,01,01,00
  26.   db 01,00,00,00,00,00,01,00,00
  27.   db 01,00,00,00,00,01,00,00,00
  28.   db 01,00,00,00,00,01,00,00,00
  29.   db 01,00,00,00,00,00,01,00,00
  30.   db 01,00,01,01,00,00,00,01,00
  31.   db 01,01,00,00,01,00,00,00,01
  32.   db 01,00,00,00,00,01,00,01,00
  33.   db 00,00,00,00,00,00,01,00,00
  34.  
  35. ;RGB       B    G    R
  36. cursor16a db 2 dup (0f0h),2 dup (0f0h),2 dup (0f0h),2 dup (0f0h),2 dup (0f0h),2 dup (0f0h),2 dup (0f0h),2 dup (0f0h)
  37.           db 2 dup (0f0h),2 dup (0f0h),2 dup (0f0h),2 dup (0f0h),2 dup (0f0h),2 dup (0f0h),2 dup (0f0h),2 dup (000h)
  38.           db 2 dup (0f0h),2 dup (0f0h),2 dup (0f0h),2 dup (0f0h),2 dup (0f0h),2 dup (0f0h),2 dup (000h),2 dup (000h)
  39.           db 2 dup (0f0h),2 dup (0f0h),2 dup (0f0h),2 dup (0f0h),2 dup (0f0h),2 dup (000h),2 dup (000h),2 dup (000h)
  40.           db 2 dup (0f0h),2 dup (0f0h),2 dup (0f0h),2 dup (0f0h),2 dup (0f0h),2 dup (000h),2 dup (000h),2 dup (000h)
  41.           db 2 dup (0f0h),2 dup (0f0h),2 dup (0f0h),2 dup (000h),2 dup (000h),2 dup (0f0h),2 dup (000h),2 dup (000h)
  42.           db 2 dup (0f0h),2 dup (0f0h),2 dup (000h),2 dup (000h),2 dup (000h),2 dup (000h),2 dup (0f0h),2 dup (000h)
  43.           db 2 dup (0f0h),2 dup (000h),2 dup (000h),2 dup (000h),2 dup (000h),2 dup (000h),2 dup (000h),2 dup (0f0h)
  44.  
  45. cursor16b db 2 dup (0a0h),2 dup (0a0h),2 dup (0a0h),2 dup (0a0h),2 dup (0a0h),2 dup (0a0h),2 dup (0a0h),2 dup (0a0h)
  46.           db 2 dup (0a0h),2 dup (000h),2 dup (000h),2 dup (000h),2 dup (0a0h),2 dup (0a0h),2 dup (0a0h),2 dup (000h)
  47.           db 2 dup (0a0h),2 dup (000h),2 dup (000h),2 dup (0a0h),2 dup (0a0h),2 dup (0a0h),2 dup (000h),2 dup (000h)
  48.           db 2 dup (0a0h),2 dup (000h),2 dup (0a0h),2 dup (0a0h),2 dup (0a0h),2 dup (000h),2 dup (000h),2 dup (000h)
  49.           db 2 dup (0a0h),2 dup (0a0h),2 dup (0a0h),2 dup (0a0h),2 dup (0a0h),2 dup (000h),2 dup (000h),2 dup (000h)
  50.           db 2 dup (0a0h),2 dup (0a0h),2 dup (0a0h),2 dup (000h),2 dup (000h),2 dup (0a0h),2 dup (000h),2 dup (000h)
  51.           db 2 dup (0a0h),2 dup (0a0h),2 dup (000h),2 dup (000h),2 dup (000h),2 dup (000h),2 dup (0a0h),2 dup (000h)
  52.           db 2 dup (0a0h),2 dup (000h),2 dup (000h),2 dup (000h),2 dup (000h),2 dup (000h),2 dup (000h),2 dup (0a0h)
  53.  
  54. ;RGB       B    G    R
  55. cursor24a db 3 dup (0f0h),3 dup (0f0h),3 dup (0f0h),3 dup (0f0h),3 dup (0f0h),3 dup (0f0h),3 dup (0f0h),3 dup (0f0h)
  56.           db 3 dup (0f0h),3 dup (0f0h),3 dup (0f0h),3 dup (0f0h),3 dup (0f0h),3 dup (0f0h),3 dup (0f0h),3 dup (000h)
  57.           db 3 dup (0f0h),3 dup (0f0h),3 dup (0f0h),3 dup (0f0h),3 dup (0f0h),3 dup (0f0h),3 dup (000h),3 dup (000h)
  58.           db 3 dup (0f0h),3 dup (0f0h),3 dup (0f0h),3 dup (0f0h),3 dup (0f0h),3 dup (000h),3 dup (000h),3 dup (000h)
  59.           db 3 dup (0f0h),3 dup (0f0h),3 dup (0f0h),3 dup (0f0h),3 dup (0f0h),3 dup (000h),3 dup (000h),3 dup (000h)
  60.           db 3 dup (0f0h),3 dup (0f0h),3 dup (0f0h),3 dup (000h),3 dup (000h),3 dup (0f0h),3 dup (000h),3 dup (000h)
  61.           db 3 dup (0f0h),3 dup (0f0h),3 dup (000h),3 dup (000h),3 dup (000h),3 dup (000h),3 dup (0f0h),3 dup (000h)
  62.           db 3 dup (0f0h),3 dup (000h),3 dup (000h),3 dup (000h),3 dup (000h),3 dup (000h),3 dup (000h),3 dup (0f0h)
  63.  
  64. cursor24b db 3 dup (0a0h),3 dup (0a0h),3 dup (0a0h),3 dup (0a0h),3 dup (0a0h),3 dup (0a0h),3 dup (0a0h),3 dup (0a0h)
  65.           db 3 dup (0a0h),3 dup (000h),3 dup (000h),3 dup (000h),3 dup (0a0h),3 dup (0a0h),3 dup (0a0h),3 dup (000h)
  66.           db 3 dup (0a0h),3 dup (000h),3 dup (000h),3 dup (0a0h),3 dup (0a0h),3 dup (0a0h),3 dup (000h),3 dup (000h)
  67.           db 3 dup (0a0h),3 dup (000h),3 dup (0a0h),3 dup (0a0h),3 dup (0a0h),3 dup (000h),3 dup (000h),3 dup (000h)
  68.           db 3 dup (0a0h),3 dup (0a0h),3 dup (0a0h),3 dup (0a0h),3 dup (0a0h),3 dup (000h),3 dup (000h),3 dup (000h)
  69.           db 3 dup (0a0h),3 dup (0a0h),3 dup (0a0h),3 dup (000h),3 dup (000h),3 dup (0a0h),3 dup (000h),3 dup (000h)
  70.           db 3 dup (0a0h),3 dup (0a0h),3 dup (000h),3 dup (000h),3 dup (000h),3 dup (000h),3 dup (0a0h),3 dup (000h)
  71.           db 3 dup (0a0h),3 dup (000h),3 dup (000h),3 dup (000h),3 dup (000h),3 dup (000h),3 dup (000h),3 dup (0a0h)
  72.  
  73. cursor32a db 4 dup (0f0h),4 dup (0f0h),4 dup (0f0h),4 dup (0f0h),4 dup (0f0h),4 dup (0f0h),4 dup (0f0h),4 dup (0f0h)
  74.           db 4 dup (0f0h),4 dup (0f0h),4 dup (0f0h),4 dup (0f0h),4 dup (0f0h),4 dup (0f0h),4 dup (0f0h),4 dup (000h)
  75.           db 4 dup (0f0h),4 dup (0f0h),4 dup (0f0h),4 dup (0f0h),4 dup (0f0h),4 dup (0f0h),4 dup (000h),4 dup (000h)
  76.           db 4 dup (0f0h),4 dup (0f0h),4 dup (0f0h),4 dup (0f0h),4 dup (0f0h),4 dup (000h),4 dup (000h),4 dup (000h)
  77.           db 4 dup (0f0h),4 dup (0f0h),4 dup (0f0h),4 dup (0f0h),4 dup (0f0h),4 dup (000h),4 dup (000h),4 dup (000h)
  78.           db 4 dup (0f0h),4 dup (0f0h),4 dup (0f0h),4 dup (000h),4 dup (000h),4 dup (0f0h),4 dup (000h),4 dup (000h)
  79.           db 4 dup (0f0h),4 dup (0f0h),4 dup (000h),4 dup (000h),4 dup (000h),4 dup (000h),4 dup (0f0h),4 dup (000h)
  80.           db 4 dup (0f0h),4 dup (000h),4 dup (000h),4 dup (000h),4 dup (000h),4 dup (000h),4 dup (000h),4 dup (0f0h)
  81.  
  82. cursor32b db 4 dup (0a0h),4 dup (0a0h),4 dup (0a0h),4 dup (0a0h),4 dup (0a0h),4 dup (0a0h),4 dup (0a0h),4 dup (0a0h)
  83.           db 4 dup (0a0h),4 dup (000h),4 dup (000h),4 dup (000h),4 dup (0a0h),4 dup (0a0h),4 dup (0a0h),4 dup (000h)
  84.           db 4 dup (0a0h),4 dup (000h),4 dup (000h),4 dup (0a0h),4 dup (0a0h),4 dup (0a0h),4 dup (000h),4 dup (000h)
  85.           db 4 dup (0a0h),4 dup (000h),4 dup (0a0h),4 dup (0a0h),4 dup (0a0h),4 dup (000h),4 dup (000h),4 dup (000h)
  86.           db 4 dup (0a0h),4 dup (0a0h),4 dup (0a0h),4 dup (0a0h),4 dup (0a0h),4 dup (000h),4 dup (000h),4 dup (000h)
  87.           db 4 dup (0a0h),4 dup (0a0h),4 dup (0a0h),4 dup (000h),4 dup (000h),4 dup (0a0h),4 dup (000h),4 dup (000h)
  88.           db 4 dup (0a0h),4 dup (0a0h),4 dup (000h),4 dup (000h),4 dup (000h),4 dup (000h),4 dup (0a0h),4 dup (000h)
  89.           db 4 dup (0a0h),4 dup (000h),4 dup (000h),4 dup (000h),4 dup (000h),4 dup (000h),4 dup (000h),4 dup (0a0h)
  90.  
  91. ccol db 0   ;current color(for color rotation)
  92.  
  93. .data?
  94. tmpstr db 80 dup (?)
  95. a db ?
  96. temp db 10 dup (?)
  97. linearaddr dd ?
  98. tvid dd ?
  99. mode db ?
  100. x dd ?
  101. y dd ?
  102. bpp db ?
  103.  
  104. ;for VESAinfo()
  105. vesa_ver dw ?
  106. modeidx dd ?
  107.  
  108. .data
  109. font8 equ "8bit.fnt"
  110. font16 equ "16bit.fnt"
  111. font24 equ "24bit.fnt"
  112. font32 equ "32bit.fnt"
  113. fontbuf dd 0
  114.  
  115. .code
  116. wait4key proc
  117.   .repeat
  118.     call kbhit
  119.   .until al
  120.   call getch
  121.   ret
  122. wait4key endp
  123.  
  124. include grafix-t.asm    ;Text Tests
  125. include grafix-g.asm    ;Grafix Tests
  126.  
  127. .code
  128. main proc
  129.   call mouse_init
  130.   .if eax==ERROR
  131.     callp printf,"Mouse Driver not installed !\n"
  132.     callp exit,0
  133.   .endif
  134. top:
  135.   callp t_setmode,80,25           ;set standard 80x25 mode
  136.   callp printf,"Grafix Test DEMO  v1.22\n\n"
  137.   callp printf,"  Select an option:\n\n"
  138.   callp printf,"    T) Text Mode Tests\n"
  139.   callp printf,"    G) Grafix Mode Tests\n\n"
  140.   callp printf,"    V) Display VESA specific info\n\n"
  141.   callp printf,"    Q) Quit\n:>";
  142. @@:
  143.   call getch
  144.   callp toupper,al
  145.   .if (al=='Q')
  146.     callp t_setmode,80,25
  147.     callp printf,"Goodbye..."
  148.     ret
  149.   .endif
  150.   .if al=='T'
  151.     call text_test
  152.   .elseif al=='G'
  153.     call grafix_test
  154.   .elseif al=='V'
  155.     call do_vesa_info
  156.   .else
  157.     jmp @b
  158.   .endif
  159.   jmp top
  160. main endp
  161.  
  162. vesa_show proc
  163.   call clrscr
  164.   callp printf,"X=%d Y=%d BPP=%d\n",vesa_modeinfo.XResolution,vesa_modeinfo.YResolution,vesa_modeinfo.BitsPerPixel
  165.   callp printf,"CelX=%d CelY=%d\n",vesa_modeinfo.XCharSize,vesa_modeinfo.YCharSize
  166.   callp printf,"BankSize=%d  WinSize=%d\n",vesa_modeinfo.BankSize,vesa_modeinfo.WinSize
  167.   callp printf,"BPSL=%d\n",vesa_modeinfo.BytesPerScanLine
  168.   xor eax,eax
  169.   mov ax,vesa_modeinfo.ModeAttributes
  170.   callp printf,"ModeAttributes=%016b (%X)\n",eax,eax
  171.   xor eax,eax
  172.   mov al,vesa_modeinfo.WinAAttributes
  173.   callp printf,"WinAAttributes=%08b (%X)\n",eax,eax
  174.   xor eax,eax
  175.   mov al,vesa_modeinfo.WinBAttributes
  176.   callp printf,"WinBAttributes=%08b (%X)\n",eax,eax
  177.   callp printf,"WinGranularity=%d WinA=%X WinB=%X\n",vesa_modeinfo.WinGranularity,vesa_modeinfo.WinASegment,vesa_modeinfo.WinBSegment
  178.   callp printf,"PhysBasePtr=%X\n\n",vesa_modeinfo.PhysBasePtr
  179.   callp printf,"Press space to continue or ESC to quit..."
  180.   ret
  181. vesa_show endp
  182.  
  183. do_vesa_info proc
  184.   call clrscr
  185.  
  186.   callp vesa_init
  187.   .if eax==ERROR
  188.     callp printf,"\nVESA not detected (press a key)"
  189.     call wait4key
  190.     ret
  191.   .endif
  192.   mov vesa_ver,ax
  193.   callp printf," Vesa Info\n\n"
  194.   callp printf,"VESA v%d.%d\n",bptr[vesa_ver+1],bptr[vesa_ver]
  195.   xor eax,eax
  196.   xor ebx,ebx
  197.   mov ax,wptr [ vesa_info.OemStringPtr + 2 ]
  198.   mov bx,wptr vesa_info.OemStringPtr
  199.   shl eax,4
  200.   add eax,ebx
  201.   callp printf,"OEM :%s\n\n",eax
  202.   callp printf,"Press a key to view VESA mode list..."
  203.   call wait4key
  204.  
  205.   call vesa_firstmode
  206.   .if eax==ERROR
  207. bad:
  208.     call clrscr
  209.     callp printf,"No more VESA modes available! (press a key)"
  210.     call wait4key
  211.     ret
  212.   .endif  
  213. top:
  214.   call vesa_show
  215. @@:
  216.   call getch
  217.   cmp al,32
  218.   jz do_more
  219.   cmp al,27
  220.   jnz @b
  221.   ret
  222. do_more:
  223.   call vesa_nextmode
  224.   .if EAX==ERROR
  225.     jmp bad
  226.   .endif
  227.   jmp top
  228. do_vesa_info endp
  229.  
  230. end
  231.  
  232.